1. Field of the Invention
Embodiments of the invention relate to communication systems and software for enhancing the efficiency and speed of data transmission within and across one or more computer systems.
2. Description of the Related Art
Conventional communications software allows a user to run programs across multiple, separate computer systems and/or across multiple processors within the same computer system. One feature of this software is the ability to send and receive data between processes running on separate computer systems and/or processors. Send and receive buffers located in host memory are required for transmitting the data between the processes. The communications software causes data to be transmitted from the send buffer to the receive buffer.
In operation, when sending data that resides in a location other than the host memory, such as in a graphics processing unit memory, the data has to be moved explicitly into a send buffer located in host memory (or located at some other intermediate location) before that data can be sent to another computer system or processor. In the receiving computer system or processor, the data has to be received into a receive buffer located in host memory (or located at some other intermediate location) and then moved explicitly into a destination location outside of the host memory, such as another graphics processing unit memory.
One drawback to this approach is the requirement to move data back and forth between send/receive buffers. In particular, it is a burden for programmers, to transmit data, to explicitly move the data from a source location outside of host memory to the send buffer; and to receive data, to explicitly move the data from the receive buffer to a destination location outside of host memory.
Accordingly, what is needed in the art is a more effective technique for transmitting data within and across multiple, separate computer systems.